In today's world, a lot of information is exchanged between several communicating parties. In certain cases, the information may be of high importance to the communicating parties, for example, banking information of a user sent over Internet, personal information of the user shared between the user and a website for setting up an account, and the like. Consequently, security of the information being exchanged is highly desirable by the communicating parties for ensuring secure transmission of the information in such cases.
One of the techniques used for achieving secure transmission of the information over insecure communication networks is cryptography. Cryptography is used to ensure secure transmission of the information in a susceptible environment where the information may be prone to attacks by hackers. Cryptography involves encryption of the information which is to be transferred over the insecure communication network followed by decryption of the information at the receiving end.
Typically, cryptography can be categorized into public key cryptography and private key cryptography. The public key cryptography involves generation of public keys and secret keys corresponding to users. These keys are used for encryption and decryption of the information along with other public parameters. A central authority, often referred to as public key infrastructure (PKI), is responsible for generating and maintaining these keys based upon a user's request and also for generating the public parameters. However, generation of the public key, the secret key is a time consuming process and in certain cases the PKI may take time in the order of days for computation of the public key and the secret key of the user.